fastApi (2)

fastAPI vs django

지난번에 fastAPI에 대해 간단하게 알아보았습니다.
그렇다면 이번에는 장고와 함께 간단하게 비교해보며, fastAPI에 장점을 알아보려합니다.
테스트 환경은 로컬테스트이며, 간단하게 db에 연동된 퀴즈정보를 받아오는것으로 하겠습니다.

ex_screenshot

테스트에는 jmeter를 사용했습니다.
테스트 시나리오는 다음과 같습니다.

ex_screenshot

500명이 10초동안 10번의 리퀘스트를 날리는것으로 간단하게 테스트해보겠습니다.

1. django get API

ex_screenshot

총 4회 테스트를 진행한 결과입니다.

총 요청회수 : 20001회 / 평균 응답시간 : 23ms
최소응답시간 : 3ms / 최대응답시간 : 169ms
표준편차 : 20.85 / 에러율 : 0%
초당 처리건수 : 15.7건 / 초당 처리량KB : 2.35kb

2. fastAPI get API

ex_screenshot

총 4회 테스트를 진행한 결과입니다.

총 요청회수 : 20000회 / 평균 응답시간 : 1ms
최소응답시간 : 0ms / 최대응답시간 : 56ms
표준편차 : 2.36 / 에러율 : 0%
초당 처리건수 : 262건 / 초당 처리량KB : 37kb

3. 결과

결과는 생각보다는 차이가 꽤 났습니다.

로컬에 정말 간단한 get api 테스트였음에도 불구하고 상당히 큰 차이를 보여주며, fastAPI가 더 높은 성능을 보여주었습니다.

물론 해당 테스트에 대한 정확도는 확신할수 없고, 단순히 한 테이블의 정보를 받아오는 간단한 api였기 때문에 실제 서버의 성능과 db설계에 따라 다른 결과를 보여줄수도 있습니다.

하지만 ‘node.js보다 빠르고 go와 필적하는 속도를 가진 프레임워크’ 라는 fastAPI소개에 걸맞는 성능을 보여준거 같습니다.

4. why?

그러면 이제 왜 이렇게 차이가 나는지에 대해 알아보겠습니다.

fastAPI의 중요한점은 Uvicorn을 사용한다는 점이었습니다.

ex_screenshot

그리고 Uvicorn은 uvloop 및 사용하는 ASGI web server이기 때문에 성능이 빠르다고 했습니다.

ex_screenshot

해당 개념에 대한 정리글:
https://it-eldorado.tistory.com/159?category=749661

5. 비교에 대한 개인적인 느낌

django와 fastAPI를 짧게 배워보고, 사용해보며 FE관점에서 느낀점은 장고는 앵귤러, fastAPI는 리액트와 비슷하다는 느낌이 들었습니다.

omr도 제대로 사용도 안해보고 완벽한 비교는 아니겠지만, 장고의 경우 풀스택 프레임워크이며 결이 완전한 웹서비스 완성에 포커스가 있다고 느껴지는 반면, fastAPI는 보다 쉽고 빠르게 api서버구축에만 포커스를 두었으며 그 과정이 django 보다는 조금 더 자유롭다고 느껴졌습니다.


Written by@JeongYeonJae
이것저것 쓰는 개발블로그

ResumeGitHub